package org.as3search.criteria {
	/*
	 * as3search - http://code.google.com/p/as3search
	 * Copyright (c) 2009-2010 by respective authors. All rights reserved.
	 *
	 * This library is free software; you can redistribute it and/or modify it under the
	 * terms of the GNU Lesser General Public License as published by the Free Software
	 * Foundation; either version 2.1 of the License, or (at your option) any later
	 * version.
	 *
	 * This library is distributed in the hope that it will be useful, but WITHOUT ANY
	 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
	 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
	 *
	 * You should have received a copy of the GNU Lesser General Public License along
	 * with this library; if not, write to the Free Software Foundation, Inc.,
	 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
	 */
	
	/**
	 * <code>SubCriteria</code> establishes the required 
	 * methods of sub criteria implementations for searching
	 * through multiple collections. 
	 * 
	 * @see org.as3search.criteria.Criteria
	 * @see org.as3search.criteria.impl.SubCriteriaImpl
	 */
	public interface SubCriteria extends Criteria {
		/**
		 * Evaluates whether a master object matches the conditions 
		 * of this <code>SubCriteria</code> instance.
		 * @param	value	The master value to be compared against. <code>SubCriteria</code>
		 * 		implementations must resolve the collection from this value.
		 * @return	Returns true if the object matches the subcollection conditions,
		 * 		false otherwise.
		 */
		function evaluate(value:Object):Boolean;
		/**
		 * The property name of the subcollection to examine.
		 */
		function get propertyName():String;
		/**
		 * The parent <code>Criteria</code> to which this <code>SubCriteria</code>
		 * instance is attached to.
		 */
		function get parent():Criteria;
	}
}